package com.yueqian.sc.web.servlet;

import com.google.gson.Gson;
import com.mysql.jdbc.StringUtils;
import com.yueqian.sc.bean.SelectCourse;
import com.yueqian.sc.bean.Users;
import com.yueqian.sc.dao.ISelectCourseDao;
import com.yueqian.sc.dao.impl.SelectCourseDao;
import com.yueqian.sc.utils.StringTools;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

/**
 * 选课操作的servlet
 */
@WebServlet("/sc/*")
public class SelectCourseServlet extends BaseServlet{
    private ISelectCourseDao courseDao = new SelectCourseDao();
    /**
     * 添加选课
     * 请求的URL：/SelectCourse2/sc/add?courseId=课程编号
     * 请求的方式：GET
     * 请求的类型：none
     * 返回的类型：JSON
     *
     * @param request
     * @param response
     */
    public void add(HttpServletRequest request, HttpServletResponse response) throws IOException{
        // 创建一个Map集合存放要返回到客户端的信息
        Map<String, Object> result = new HashMap<>();
        // 1. 处理前后端的编码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 2. 获取前端表单提交的数据
        String courseId = request.getParameter("courseId");
        // 3. 获取登录学生的编号
        Users student = (Users) request.getSession().getAttribute("user");
        int studentId = 0;
        if(student!=null){
            studentId = student.getUserId();
        }
        // 3. 非空校验
        if (StringUtils.isNullOrEmpty(courseId)) {
            result.put("code", -1);
            result.put("msg", "您的输入项不能为空！");
        } else {
            // 4. 访问数据库
            // 创建需要保存到数据库的数据
            SelectCourse selectCourse = new SelectCourse(studentId,Integer.parseInt(courseId));
            // 调用保存的方法
            if (courseDao.addSelectCourse(selectCourse)) {
                System.out.println("课程选择成功！");
                result.put("code", 1);
                result.put("msg", "课程选择成功！");

            } else {
                System.out.println("课程选择失败！");
                result.put("code", 0);
                result.put("msg", "课程选择失败！");

            }
        }
        // 5. 将结果响应到前端
        PrintWriter pw = response.getWriter();
        // 创建gson，将map转换为json
        Gson gson = new Gson();
        pw.write(gson.toJson(result));
    }
    /**
     * 取消选课
     * 请求的URL：/SelectCourse2/sc/delete?courseId=课程编号
     * 请求的方式：GET
     * 请求的类型：none
     * 返回的类型：JSON
     *
     * @param request
     * @param response
     */
    public void delete(HttpServletRequest request, HttpServletResponse response) throws IOException{
        // 创建一个Map集合存放要返回到客户端的信息
        Map<String, Object> result = new HashMap<>();
        // 1. 处理前后端的编码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        // 2. 获取前端表单提交的数据
        String courseId = request.getParameter("courseId");
        // 3. 获取登录学生的编号
        Users student = (Users) request.getSession().getAttribute("user");
        int studentId = 0;
        if(student!=null){
            studentId = student.getUserId();
        }
        // 3. 非空校验
        if (StringUtils.isNullOrEmpty(courseId)) {
            result.put("code", -1);
            result.put("msg", "您的输入项不能为空！");
        } else {
            // 4. 访问数据库
            // 创建需要保存到数据库的数据
            SelectCourse selectCourse = new SelectCourse(studentId,Integer.parseInt(courseId));
            // 调用保存的方法
            if (courseDao.deleteSelectCourse(selectCourse)) {
                System.out.println("课程取消成功！");
                result.put("code", 1);
                result.put("msg", "课程取消成功！");

            } else {
                System.out.println("课程取消失败！");
                result.put("code", 0);
                result.put("msg", "课程取消失败！");

            }
        }
        // 5. 将结果响应到前端
        PrintWriter pw = response.getWriter();
        // 创建gson，将map转换为json
        Gson gson = new Gson();
        pw.write(gson.toJson(result));
    }
}
